matrix coding reasoning